package com.gt.sql

import com.gt.SCUtil
import org.apache.spark.sql.{DataFrame, SparkSession}
import org.apache.spark.sql.functions._

/**
 * DSL 选择指定的列
 * 首先 -> 引入 import spark.implicits._
 *
 */
object SparkDataFrame_02 {
  def main(args: Array[String]): Unit = {
    val spark: SparkSession = SCUtil.buildLocalSparkSession()
    import spark.implicits._

    val df: DataFrame = spark.read.json("data/user.json")

    //方法一
    val df1: DataFrame = df.select("name", "age")
    df1.show
    df1.printSchema()

    //方法二 使用 单引号 引用列
    val df2: DataFrame = df.select('age +1)
    df2.show
    df2.printSchema()

    //方法三 使用 column 引用列
    val df3: DataFrame = df.select(column("age") + 1)
    df3.show
    df3.printSchema()

    //方法四 使用 $ 引用列
    val df4: DataFrame = df.select($"age" + 1)
    df4.show
    df4.printSchema()

    //查询age 大于 20 的数据
    val df5: DataFrame = df.filter('age > 20)
    df5.show(100,false)
    df5.printSchema()

    val df6: DataFrame = df.groupBy("age").count
    df6.show(100, false)
    df6.printSchema()

    spark.close()
  }

}
